Groq

Open In Colab
セットアップなしでWeaveでGroqモデルを試してみたいですか?LLMプレイグラウンドをお試しください。
Groqは高速なAI推論を提供するAIインフラストラクチャ企業です。GroqのLPU™推論エンジンは、優れた計算速度、品質、エネルギー効率を提供するハードウェアとソフトウェアのプラットフォームです。WeaveはGroqチャット完了呼び出しを使用して行われた呼び出しを自動的に追跡し、ログに記録します。

トレーシング

言語モデルアプリケーションのトレースを開発中も本番環境でも中央の場所に保存することが重要です。これらのトレースはデバッグに役立ち、アプリケーションの改善に役立つデータセットとしても機能します。 WeaveはGroqのトレースを自動的にキャプチャします。追跡を開始するには、weave.init(project_name="<YOUR-WANDB-PROJECT-NAME>")を呼び出し、通常通りライブラリを使用します。
import os
import weave
from groq import Groq

weave.init(project_name="groq-project")

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)
chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Explain the importance of fast language models",
        }
    ],
    model="llama3-8b-8192",
)
これで、Weaveはgroqライブラリを通じて行われたすべてのLLM呼び出しを追跡し、ログに記録します。Weaveウェブインターフェースでトレースを表示できます。

独自のオペレーションを追跡する

関数を@weave.opでラップすると、入力、出力、アプリケーションロジックのキャプチャが開始され、データがアプリケーションをどのように流れるかをデバッグできます。オペレーションを深くネストして、追跡したい関数のツリーを構築できます。これにより、gitにコミットされていないアドホックな詳細をキャプチャするために、実験するときにコードの自動バージョン管理も開始されます。 単に@weave.opでデコレートされた関数を作成します。 以下の例では、recommend_places_to_visitという関数があり、これは@weave.opでラップされた都市で訪れるべき場所を推薦する関数です。
import os
import weave
from groq import Groq


weave.init(project_name="groq-test")

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)

@weave.op()
def recommend_places_to_visit(city: str, model: str="llama3-8b-8192"):
    chat_completion = client.chat.completions.create(
        messages=[
            {
                "role": "system",
                "content": "You are a helpful assistant meant to suggest places to visit in a city",
            },
            {
                "role": "user",
                "content": city,
            }
        ],
        model="llama3-8b-8192",
    )
    return chat_completion.choices[0].message.content


recommend_places_to_visit("New York")
recommend_places_to_visit("Paris")
recommend_places_to_visit("Kolkata")
recommend_places_to_visit関数を@weave.opでデコレートすることで、その入力、出力、および関数内で行われるすべての内部LM呼び出しがトレースされます。

Modelを作成して実験を容易にする

多くの要素が動いているとき、実験の整理は難しくなります。Modelクラスを使用することで、システムプロンプトや使用しているモデルなど、アプリの実験的な詳細をキャプチャして整理できます。これにより、アプリの異なるイテレーションを整理して比較するのに役立ちます。 コードのバージョン管理と入出力のキャプチャに加えて、Modelはアプリケーションの動作を制御する構造化されたパラメータをキャプチャし、どのパラメータが最も効果的だったかを簡単に見つけることができます。また、Weave Modelsをserve、およびEvaluationと一緒に使用することもできます。 以下の例では、GroqCityVisitRecommenderを実験できます。これらのいずれかを変更するたびに、新しいversionGroqCityVisitRecommenderが得られます。
import os
from groq import Groq
import weave


class GroqCityVisitRecommender(weave.Model):
    model: str
    groq_client: Groq

    @weave.op()
    def predict(self, city: str) -> str:
        system_message = {
            "role": "system",
            "content": """
You are a helpful assistant meant to suggest places to visit in a city
""",
        }
        user_message = {"role": "user", "content": city}
        chat_completion = self.groq_client.chat.completions.create(
            messages=[system_message, user_message],
            model=self.model,
        )
        return chat_completion.choices[0].message.content


weave.init(project_name="groq-test")
city_recommender = GroqCityVisitRecommender(
    model="llama3-8b-8192", groq_client=Groq(api_key=os.environ.get("GROQ_API_KEY"))
)
print(city_recommender.predict("New York"))
print(city_recommender.predict("San Francisco"))
print(city_recommender.predict("Los Angeles"))
を使用した呼び出しのトレースとバージョン管理Model

Weave Modelの提供

任意のweave.Modelオブジェクトへのweave参照が与えられた場合、fastapiサーバーを起動してserveすることができます。
dspy_weave_model_serve.png
モデルに移動してUIからコピーすることで、任意のWeaveModelのweave参照を見つけることができます。
ターミナルで次のコマンドを使用してモデルを提供できます:
weave serve weave:///your_entity/project-name/YourModel:<hash>